package demo05;

/*
 * 访问成员变量有两种方式：
 * 1. 直接通过对象名称访问成员变量：等号左边是谁，就优先用谁，没有则向上找。
 * 2. 间接通过成员方法访问成员变量：方法属于谁，就优先用谁，没有则想上找。
 */
public class Demo01MultiField {
    public static void main(String[] args) {
        // 使用多态的写法，父类引用指向子类对象
        Fu obj = new Zi();
        System.out.println(obj.num); // 10，直接访问成员变量会优先父类
        // System.out.println(obj.age); // 错误写法！父类中访问不到，会向上找Object类，不会向下找子类，因此子类定义了这个成员变量也没用
        System.out.println("============");

        obj.printNum(); // 20，间接访问成员变量会优先子类
        // 使用方法时，由于obj是子类对象，方法优先使用子类的
        // 子类有覆盖重写父类方法，就使用子类方法
        // 子类没有覆盖重写父类方法，就向上找父类，使用父类方法
    }
}
